var path=require('path');

/*
normalize():
1.可以处理以下字符：
    ..:上级目录
    .:当前目录
    //:/
    /:/
2.单纯对参数字符串操作，不与文件系统交互

*/
console.log(path.normalize(__dirname+'//test//..//.'));
console.log(path.normalize('/test/../.'));

/*join:
1.类似于normalize，支持多个参数
2.单纯对参数字符串操作，不与文件系统交互
* */
console.log(path.join(__dirname,'//test','//..','//.'));
console.log(path.join(__dirname,'/test','/..','/.'));
console.log(path.join('/test/test2/test3','/..','/.'));

/*
 resolve():
 1.类似于normalize，支持多个参数
 2.相当于在多个参数路径字符串上执行CD操作
 3.如果最后解析的路径不是绝对路径，resolve会自动在此路径前面添加当前工作
 4.单纯对参数字符串操作，不与文件系统交互
 */
console.log(path.resolve('test'));//E:\Work\NodeJS\GJBC_NodeJS高级编程\7-文件\test
console.log(path.resolve('test','../'));//E:\Work\NodeJS\GJBC_NodeJS高级编程\7-文件

console.log(path.resolve('/a/b','../c/d'));//=>E:\a\c\d
console.log(path.resolve('/a/b','c/d'));//=>E:\a\b\c\d
console.log(path.resolve('/a/b','/c/d'));//=>E:\c\d(c前面的/表示回到磁盘根目录)


/*
 relative():
 返回如何从一个绝对路径跳转到另一个绝对路径
*/
console.log(path.relative('/a/b/c/d','/a/b/e/f'));//=>..\..\e\f


